package com.zjl
        ;

import java.util.ArrayList;
import java.util.Scanner;

public class StudentManager {
    public static void main(String[] args){
        //创建集合对象，用于存储学生数据
        ArrayList<Student> array= new ArrayList<>();

        //用循环完成再次回到主界面
        while(true) {

            //用输出语句完成主界面的编写
            System.out.println("--------欢迎来到学生管理系统--------");
            System.out.println("1、添加学生");
            System.out.println("2、删除学生");
            System.out.println("3、修改学生");
            System.out.println("4、查询学生");
            System.out.println("5、退出系统");
            System.out.println("请输入你的选择：");

            //用Scanner实现键盘录入数据
            Scanner sc = new Scanner(System.in);
            String line = sc.nextLine();

            //用switch语句完成操作选择
            switch (line) {
                case "1":
                    addStudent(array);
                    break;
                case "2":
                    deleteStudent(array);
                    break;
                case "3":
                    updateStudent(array);
                    break;
                case "4":
                    finalAllStudent(array);
                    break;
                case "5":
                    System.out.println("感谢您的使用，再见！");
                    System.exit(0); //结束当前正在运行的虚拟机
            }
        }

    }

    //定义添加学生信息的方法
    public static void addStudent(ArrayList<Student> array){
        Scanner sc=new Scanner(System.in);
        String sid;
        while(true) {
            System.out.println("请输入学生的学号：");
            sid = sc.nextLine();

            boolean flag = isUsed(array, sid);
            if (flag) {
                System.out.println("你输入的学号已被占用，请重新输入：");
            }
            else{
                break;
            }
        }
        System.out.println("请输入学生的姓名：");
        String name=sc.nextLine();
        System.out.println("请输入学生的年龄：");
        int age=sc.nextInt();
        sc.nextLine();
        System.out.println("请输入学生的居住地：");
        String address=sc.nextLine();

        //创建学生对象，将键盘录入的数据赋值给学生对象的成员变量
        Student s =new Student();
        s.setSid(sid);
        s.setName(name);
        s.setAge(age);
        s.setAddress(address);

        //将学生对象添加到集合中
        array.add(s);

        //给出添加成功提示
        System.out.println("添加学生成功");
    }

    //定义判断学号是否被占用方法
//    public static boolean isUsed(ArrayList<Student> array, String sid){
//        boolean flag=false;
//        for(int i=0; i< array.size(); i++){
//            Student s= array.get(i);
//            if(s.getSid().equals(sid)){
//                flag=true;
//                break;
//            }
//        }
//        return  flag;
//    }
    public static boolean isUsed(ArrayList<Student> array, String sid) {
        return array.stream()//使用stream流操作使代码简洁
                .anyMatch(s -> s != null && sid != null && sid.equals(s.getSid()));
    }
    //定义查看所有学生信息的方法
    public static void finalAllStudent(ArrayList<Student> array){
        //判断集合是否有数据，如果没有显示提示信息
        if(array.size()==0){
            System.out.println("无信息，请先添加信息再查询");
            //为了让程序不再往下执行
            return;
        }

        //显示表头信息
        System.out.println("学号\t\t\t姓名\t\t\t年龄\t\t居住地");
        for(int i=0; i<array.size(); i++){
            Student s=array.get(i);
            System.out.println(s.getSid()+"\t\t"+s.getName()+"\t\t"+s.getAge()+"岁\t"+s.getAddress());
        }
    }

    //定义删除学生信息的方法
    public static void deleteStudent(ArrayList<Student> array){
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入你要删除的学生的学号：");
        String sid=sc.nextLine();

        //遍历集合将对应的学生对象从集合中删除
        for(int i=0; i< array.size(); i++){
            Student s=array.get(i);
            if(s.getSid().equals(sid)){
                array.remove(i);
                break;
            }
        }
        System.out.println("删除该学生信息成功");
    }

    //定义修改学生信息的方法
    public static void updateStudent(ArrayList<Student> array){
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入你要修改的学生的学号：");
        String sid=sc.nextLine();

        //键盘录入要修改的学生信息
        System.out.println("请输入学生的新姓名：");
        String name=sc.nextLine();
        System.out.println("请输入学生的新年龄：");
        int age=sc.nextInt();
        sc.nextLine();
        System.out.println("请输入学生的新居住地：");
        String address=sc.nextLine();

        //创建学生对象
        Student s=new Student();
        s.setSid(sid);
        s.setName(name);
        s.setAge(age);
        s.setAddress(address);

        //遍历集合修改对应的学生信息
        for(int i=0; i<array.size(); i++){
            Student student=array.get(i);
            if(student.getSid().equals(sid)){
                array.set(i,s);  //把修改后的student s赋值给i的位置
                break;
            }
        }

        //给出修改成功提示
        System.out.println("修改学生信息成功");
    }
}